使用execv在C中拆分文件

时间:2015-10-22 01:44:23

标签: c linux macos split exec

我试图通过在C程序中通过execv使用“split”来拆分文件。代码如下所示:

char *args[] = {"split", "-a1", "-b40", "dfc.conf", NULL};
execv("/usr/bin/split", args);

虽然理论上这应该有用,但它不起作用。该文件没有被拆分。我也没有收到任何错误。

我在OSX 8上运行它。 任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:0)

我尝试在命令行上运行命令,在我碰巧遇到的任意文件上:

$ 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的文件。您可以通过在文件名称之后将其指定为参数来控制前缀分裂。