Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c中调用write命令时传递整数代替文件描述符 void main() { pid_t pid; int i; 字符大小[buf_SIZE]; fork(); pid=getpid(); 对于(i=1;i_C - Fatal编程技术网

在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是标准错误描述符
默认情况下,两者都写入控制台(0是标准输入,不能写入)


除非通过
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);
     }
}