我想用ctypes.execve文件在python中调用外部脚本。我已经知道如何调用脚本以及如何传递参数列表。 但正如您所看到的,列表或参数是非常静态的,我不知道如何动态地执行此操作。你知道吗
参数列表应为python列表
例如:argv_list = ["./tmp/arg_test.sh", "arg_1", "arg_2"]
这个python列表需要以某种方式进行转换以匹配char * const argv[]
,这样我就可以将它传递给execve。<;——这就是我挣扎的地方。你知道吗
cmd = "./tmp/arg_test.sh"
cmd_byte = cmd.encode('utf-8') # create byte objects from the strings
### works ### ### works ### ### works ### ### works ###
argv_0 = "argv_0"
argv_0_byte = argv_0.encode('utf-8')
argv_1 = "argv_1"
argv_1_byte = argv_1.encode('utf-8')
argv_2 = "argv_2"
argv_2_byte = argv_2.encode('utf-8')
argv_3 = "argv_3"
argv_3_byte = argv_3.encode('utf-8')
b_argv = (ctypes.c_char_p * 5)(argv_0_byte, argv_1_byte, argv_2_byte, argv_3_byte)
### works ### ### works ### ### works ### ### works ###
# int execve(const char * filename, char * const argv[], char * const envp[]);
libc.execve(ctypes.c_char_p(cmd_byte), b_argv, 0)
谢谢!你知道吗
下面是一种动态生成参数的方法。这是为Windows
msvcrt
编写的,但也应该适用于libc
:测试.cpp
测试.py
输出:
相关问题 更多 >
编程相关推荐