void main()
{
pid_t pid;
int i;
char buf[BUF_SIZE];
fork();
pid = getpid();
for (i = 1; i <= MAX_COUNT; i++) {
sprintf(buf, "This line is from pid %d, value = %d\n", pid, i);
write(1, buf, strlen(buf));
// printf("%s",buf);
}
}
我已经得到了给定的简单代码来显示 c 中的 fork 进程。我注意到,当我在 write 命令中传递任何大于 2 的值代替 1 时,代码不会打印任何内容。为什么会发生这种情况?
最佳答案
您正在程序开始时执行原始 write
调用:
- 1 是标准输出描述符
- 2 是标准错误描述符
两者都默认写入控制台(且0为标准输入,无法写入)
其他描述符无效,除非它们是由 open
调用返回的。由于您没有检查 write
的返回值,因此您看不到返回的错误代码(可能是 EBADF
,错误的文件描述符)
关于c - 在c中调用write命令时传递整数代替文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53420606/