c - 使用execv在C中拆分文件

标签 c linux macos split exec

我正在尝试通过 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/

相关文章:

c++ - 如何检测 Linux/MacOs 平台中的内存泄漏?

c - 'long long' 的格式说明符

c - 从 C 控制台获取十六进制值

linux - linux 上的进程忽略资源限制

linux - 带有桥接适配器的 VirtualBox 上的 Debian guest 无法访问互联网

mysql - 如何在 mac 上卸载未使用的 MySQL 版本?

c - 合并排序过程说明(自上而下,自下而上)

linux - linux调度器在哪里触发?

xcode - 为 OS X 编写一个应用程序,允许用户使用上下文菜单项 "Open With"选择应用程序

swift - 使用 swift 在 OS X 上获取所有可用的文件夹元数据