getchld 后打开文件 linux eclipse c 错误

open file linux eclipse c error after getchld

我只是想打开一个文件。 我已经这样做了 100 次,然后我向其他进程发送了 SIGCHLD 信号,我想在那之后我就再也无法打开那个文件了。

#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>

#define FLAGS IPC_CREAT | 0644
int main()  {
int res =open("results.txt",FLAGS);
if(res== -1) { printf("error!!")}   //prints it every time
return 0;}

..突然发生了..求助???

你对旗帜做了一些奇怪的事情。我认为您的意图是按照以下代码:

#define FLAGS O_CREAT
#define MODE 0644
int main()  
{
    int res =open("results.txt",FLAGS,MODE);
    if(res== -1) { printf("error!!");}   //prints it every time
    return 0;
}

以下代码:

  1. 干净地编译
  2. 正确调用 open() 函数
  3. 正确显示错误信息
  4. #include没有使用的头文件
  5. 始终缩进代码
  6. 遵循公理:`每行只有一个语句,每个语句(最多)一个变量声明。
  7. 通过空行分隔代码块(for、if、else、while、do...while、switch、case、default)
  8. main() 函数使用了正确的签名(发布的代码中的空括号意味着允许任意数量的参数,包括 0 个参数
  9. code should not return 0 success when an error occurs 所以使用 exit( EXIT_FAILURE )

现在代码:

#include <stdio.h>   // perror()
#include <stdlib.h>  // exit(), EXIT_FAILURE
#include <unistd.h>  // open()
#include <fcntl.h>   // O_CREAT

#define FLAGS O_CREAT
#define MODE 0644

int main( void )
{
    int res =open("results.txt", FLAGS, MODE);
    if(res== -1)
    {
        perror( "open for results.txt failed" );
        exit( EXIT_FAILURE );
    }   

    return 0;
}