小编Jar*_*ary的帖子

sigset:忽略Unix中的ctrl-c

我试图让我的程序忽略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

c unix

3
推荐指数
2
解决办法
1万
查看次数

UNIX 上使用 free() 时 putenv() 的问题

我试图在 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)

c unix free memory-management

3
推荐指数
1
解决办法
802
查看次数

标签 统计

c ×2

unix ×2

free ×1

memory-management ×1