我试图让我的程序忽略Ctrl+ C在unix中似乎工作,问题是它继续写"语法错误".这是代码
extern "C" void ignore( int sig )
{
fprintf( stderr, "\n"); // Print a new line
// This function does nothing except ignore ctrl-c
}
int main()
{
// For ctrl-c
sigset( SIGINT, ignore );
while (1) {
getUserInput();
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
每次我点击Ctrl+ C它再次运行getUserInput,这是预期的行为,但它也写了"语法错误".我检查并执行"忽略"函数,一旦执行完毕,它就会输出错误信息,我不知道为什么.
有人有任何线索吗?
非常感谢你,
Jary
我试图在 UNIX 上通过在此之前连接 str1 和 str2 来使用 putenv() 。我想在环境中添加一个变量或修改一个变量,所以我调用 putenv() (或者我可以调用 setenv() 相同)。
基本上,我收到 str1 和 str2,我创建 str1=str2 并将其作为参数传递到 putenv() 中。
我显示的代码有效,但是当我取消对 free() 调用的注释时,它不会:变量不会为环境添加/修改。
size_t size = strlen(str1) + strlen(str2) + 2; // 2 is for the '\0' and the '='
char *tmp = (char *) malloc(sizeof(char) * size);
char *p;
int pos = 0;
// Copy first word
p = str1;
while (*p != NULL) {
tmp[pos++] = *p++;
}
// Add the '='
tmp[pos++] = '=';
// Copy …
Run Code Online (Sandbox Code Playgroud)