【问题标题】:C system call fails from second time onC 系统调用从第二次开始失败
【发布时间】:2020-06-16 18:42:37
【问题描述】:

我正在运行一个程序,给定点执行system 调用以压缩一些文件。

第一次正常运行,但下一次(以及下一次)失败并显示 -1 错误代码。

sprintf(zip, "zip -q -T -m -r %s/datsiter%d.zip %s/*%d.dat", dir, it_number, dir, it_number);
ierr = system(zip); 
printf("Output:%s %d\n ",zip, ierr);

输出是:

Output:zip -q -T -m -r results/datsiter0.zip results/*0.dat 0
Output:zip -q -T -m -r results/datsiter1.zip results/*1.dat -1
Output:zip -q -T -m -r results/datsiter2.zip results/*2.dat -1

如果运行后我手动执行命令,它会按预期工作。

编辑 根据 kaylum 的建议,我在 system 通话后添加了 perror("Error: "); 并获得了密钥。一个不错的Cannot allocate memory,我必须仔细检查,因为我在使用队列系统的集群中工作。

【问题讨论】:

  • 致电perror 看看是否有更具体的错误可用。
  • 你不妨试试看zip的stdout输出是什么,比如这里stackoverflow.com/questions/646241/…
  • Nitpick:system() 不是系统调用,虽然它会在内部调用多个系统调用,其中没有一个称为“系统”。
  • 你在什么系统上运行?视窗? linux?

标签: c command system-calls


【解决方案1】:

根据 kaylum 的建议,我添加了 perror("Error: ");就在系统调用并获得密钥之后。一个不错的无法分配内存,我必须仔细检查,因为我正在使用队列系统的集群中工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 2013-07-20
    • 1970-01-01
    • 2012-07-31
    • 2021-04-02
    相关资源
    最近更新 更多