【发布时间】:2016-10-09 05:15:51
【问题描述】:
我只是想打开一个文件。 我已经这样做了 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;}
..它突然发生了..帮助???
【问题讨论】:
-
首先要做的是找出错误的具体原因,使用 errno 和/或 strerror()。 This page 应该会有所帮助。
-
据我所知,
IPC_CREAT不是open的有效模式。您的意思是使用shmget吗? -
打印错误时,输出到
stderr,而不是stdout。并输出操作系统认为是问题的消息。 IE。使用:perror(),而不是printf() -
为了便于阅读和理解,1) 遵循公理:每行只有一个语句,并且(最多)每条语句一个变量声明。 2) 一致地缩进代码.在每个左大括号 '{' 后缩进。在每个右大括号 '}' 之前取消缩进。切勿使用制表符进行缩进。建议为每个缩进级别使用 4 个空格,因为即使使用可变宽度字体也是可见的。
-
IPC_CREAT应该是:O_CREAT
标签: c linux eclipse signals creation