在c中调用write命令时传递整数代替文件描述符 void main() { pid_t pid; int i; 字符大小[buf_SIZE]; fork(); pid=getpid(); 对于(i=1;i
您正在执行原始在c中调用write命令时传递整数代替文件描述符 void main() { pid_t pid; int i; 字符大小[buf_SIZE]; fork(); pid=getpid(); 对于(i=1;i,c,C,您正在执行原始write调用,其中在程序开始时: 1是标准输出描述符 2是标准错误描述符 默认情况下,两者都写入控制台(0是标准输入,不能写入) 除非通过open调用返回了其他描述符,否则这些描述符无效。由于未检查write的返回值,因此无法看到返回了错误代码(可能是EBADF,错误的文件描述符)您应该检查write的返回值是否存在错误。1表示标准输出描述符,2表示错误。其他未打开。请注意fork部分与问题无关。该示例可以进一步简化为仅包含write调用。 void main() {
write
调用,其中在程序开始时:
- 1是标准输出描述符
- 2是标准错误描述符
除非通过
open
调用返回了其他描述符,否则这些描述符无效。由于未检查write
的返回值,因此无法看到返回了错误代码(可能是EBADF
,错误的文件描述符)您应该检查write
的返回值是否存在错误。1表示标准输出描述符,2表示错误。其他未打开。请注意fork
部分与问题无关。该示例可以进一步简化为仅包含write
调用。
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);
}
}