- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试通过 C 程序中的 execv 使用“拆分”来拆分文件。代码如下所示:
char *args[] = {"split", "-a1", "-b40", "dfc.conf", NULL};
execv("/usr/bin/split", args);
虽然理论上这应该有效,但它不起作用。该文件没有被拆分。我也没有收到任何错误。
我在 OSX 8 上运行它。任何帮助将不胜感激。
最佳答案
我尝试在命令行中对我碰巧拥有的任意文件运行该命令:
$ split -a1 -b40 ll19.c
split: too many files
$ ls x*
xa xb xc xd xe xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz
$ ls -l x?
-rw-r--r-- 1 jleffler staff 40 Oct 21 20:22 xa
-rw-r--r-- 1 jleffler staff 40 Oct 21 20:22 xb
-rw-r--r-- 1 jleffler staff 40 Oct 21 20:22 xc
…guess what appears here…
-rw-r--r-- 1 jleffler staff 40 Oct 21 20:22 xx
-rw-r--r-- 1 jleffler staff 40 Oct 21 20:22 xy
-rw-r--r-- 1 jleffler staff 40 Oct 21 20:22 xz
$ ls -l ll19.c
-rw-r--r-- 1 jleffler staff 4737 Aug 16 23:24 ll19.c
$
因此,一种明显的可能性是您以某种方式将错误重定向到 /dev/null
或以其他方式丢失了它们,并且该命令正在报告问题,但您没有看到它们。尝试使用 -a3
运行。目前,您的文件被分成 40 字节的段,如果文件大于 1040 字节,那就太大了。如果你想要它在 40 行的段中,然后使用 -l40
而不是 -b40
。
另一种可能性:您实际上并不是在寻找以 x
开头且后缀长度为 1 的文件。您可以通过将前缀指定为文件名后的参数来控制前缀 split 。
关于c - 使用execv在C中拆分文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33272111/
该程序在嵌入式 Linux 上执行(内核版本:3.4.0)。在调用execve()之前,还调用了setgid()和setuid()切换到另一个用户(tstuser).用户存在,必要的条目在 /etc/
我使用 execv 和参数:$PATH 调用 echo,输出是 $PATH,而不是 $PATH 环境变量的实际值,这是我在 bash 中执行相同操作时得到的值。 为什么会发生这种情况?我传递了所有正确
我在使用此 execve 命令时遇到问题。我可以在我的程序中使用它来运行大多数其他命令,但如果我尝试执行 man ls 之类的操作,我会收到此错误。 man: can't execute pager:
在 C 程序中,main 函数通过查看 argc 知道在 argv 中传递了多少参数。我似乎不清楚 syscall execve 如何知道传递给它的参数数量。有人可以帮助解释 execve 如何处理参
我是新手,所以我可能对表达不准确。我需要用汇编程序在 C 中进行系统调用“execve”。我不使用任何库。不起作用的部分是 char *nul=(char *)0; char *argv[] = {
我的教授编写了一个程序,它使用 execve() 打印工作目录 (pwd),但我不明白其中的参数。 pid_t pid = fork(); if(pid int main(int argc, cha
我有一个名为“test”的程序,它执行另一个名为“hello”的程序。收到所需程序的名称后,我的程序似乎等待更多输入才能显示“hello”程序代码。示例代码片段 #include #include
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
我在使用 C 程序时遇到了一些神秘的情况,该程序在我的电脑上运行良好,但当我在我正在使用的服务器上编译它时却失败了。基本上execve执行失败。原来的程序不太大,所以我开始削减一些部分,以尝试了解问题
我正在尝试在 Linux 计算机上测试绝对路径以查找程序所在的位置,以便我可以使用特定参数运行它。问题是,当我找到它时,我不断向正确的路径添加更多字符串,并通过释放动态分配的内存来导致内存泄漏。堆栈转
我必须执行一个路径未知的命令。我可以到达环境路径,但如何使用它们?例如,如果有 5 个不同的路径,我应该在 execv 中尝试哪一个? /usr/lib/lightdm/lightdm:/usr/lo
我对此困惑了一段时间,现在我需要一些帮助。我正在尝试创建一个循环,该循环将 fork 子进程并通过 execve() 调用“echo hello”。 #include #include #inc
我的程序中有这个: execv (programname, (char **)argv); 我不确定命令是否真的被正确执行了。我怎样才能知道?这是在后台运行吗? 最佳答案 我强烈建议你买一本与你正在
我必须制作一个自定义 shell 作为学校项目,但我遇到了困难: int exec_shell(char **argv) // { if (execve(argv[0], (char **)a
我试图找到我当前的 PATH 以在我的 execv() 命令中使用它,但我仍然无法弄清楚如何找到任何提示的路径? 最佳答案 获取当前PATH variable从您的环境中(参见 environ(7)
了解 Linux 内核说 execve() 调用每个 linux_binfmt 对象的 load_binary(),并且 load_binary() Invokes the start_thread(
我们有一个从 inittab 启动的 stub ,execv 是我们的进程。 (ARM Linux 内核 2.6.25) 测试进程时,只有从 inittab 启动并执行时才会失败。如果在命令行上启动,
程序应该做什么的例子: ./executable ls -l 应该做同样的事 ls -l 所以基本上它是一个无用的 shell 命令解释器。 我创建了一个包含/bin/commandname 的字符串
我想编写一个程序来执行 Linux ls 命令。我真的只想输入 ls 而不是 /bin/ls,所以我想使用 execve (execvp 不是一个选项)。 我试过: char *env[] = { "
我有一项大学作业,我需要从管道中读取 bash 命令并执行该命令。我正在考虑使用 execv*,因为我可以通过以空格作为分隔符来创建缓冲区。问题是我不能使用 STL 库,而且我不知道应该如何创建这个缓
我是一名优秀的程序员,十分优秀!