小编A. *_*son的帖子

我的嵌入式python stdout在哪里?

考虑以下MWE:

#include <Python.h>
#include <stdio.h>

int main(void) {
  printf("Test 1\n");
  Py_Initialize();
  printf("Test 2\n");
  PyRun_SimpleString("print('Test 3')");
  printf("Test 4\n");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我正常编译并运行时,我得到预期的输出:

$ ./test
Test 1
Test 2
Test 3
Test 4
Run Code Online (Sandbox Code Playgroud)

但是当我重定向输出时,我从python代码中得不到任何东西:

$ ./test | cat
Test 1
Test 2
Test 4
Run Code Online (Sandbox Code Playgroud)

怎么了?更重要的是,如何将我的python输出写入stdout,如预期的那样?

python python-embedding python-3.4

14
推荐指数
2
解决办法
542
查看次数

execve("/ bin/sh",0,0); 在管道里

我有以下示例程序:

#include <stdio.h>

int
main(int argc, char ** argv){
    char buf[100];

    printf("Please enter your name: ");
    fflush(stdout);
    gets(buf);
    printf("Hello \"%s\"\n", buf);

    execve("/bin/sh", 0, 0);
}
Run Code Online (Sandbox Code Playgroud)

我当我没有任何管道运行时,它应该工作,并返回一个shpromt:

bash$ ./a.out
Please enter your name: warning: this program uses gets() which is unsafe.
testName
Hello "testName"
$ exit
bash$
Run Code Online (Sandbox Code Playgroud)

但这不适用于管道,我想我知道为什么会这样,但我无法找到解决方案.示例运行波纹管.

bash$ echo -e "testName\npwd" | ./a.out
Please enter your name: warning: this program uses gets() which is unsafe.
Hello "testName"
bash$
Run Code Online (Sandbox Code Playgroud)

我认为这与以下事实有关:以一种接收EOF 的方式gets清空并且stdin/bin/sh没有错误消息的情况下退出.

但是我如何解决这个问题(如果可能的话,不修改程序,如果没有gets …

c shell freebsd pipe execve

10
推荐指数
1
解决办法
7721
查看次数

为什么windows START命令不能与参数和路径中的空格一起使用?

这个命令有效

START /b /wait "Dummy title" "C:\tmp\test runner2.bat" arg1 arg2
Run Code Online (Sandbox Code Playgroud)

但这两个都失败了!

START /b /wait "Dummy title" "C:\tmp\test runner2.bat" arg1 arg2 "arg 3" arg4
START /b /wait "Dummy title" "C:\tmp\test runner2.bat" arg1 arg2 "arg 3"
Run Code Online (Sandbox Code Playgroud)

错误是:

'C:\tmp\test' is not recognized as an internal or external command, operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

显然它与讨论"这些论点有关,但为什么以及如何解决这个问题呢?

相关问题:

windows batch-file command-line-arguments

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

查找在日期,批处理脚本之间创建/访问/修改的文件

我需要生成在Windows系统上分别创建,修改和访问的所有文件的列表.

我在forfiles这里找到了命令http://technet.microsoft.com/sv-se/library/cc753551(v=ws.10).aspx但显然这不使用创建和访问的时间戳,我也需要那些(在单独的名单).

我也研究过使用该dir命令,但我只找到了对帮助部分中的排序和过滤的引用.

windows command-line timestamp batch-file

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