在c程序中使用dd命令

时间:2017-05-19 18:18:01

标签: c dd

我需要在我的c代码中使用以下代码并进行编译。

dd if=/dev/urandom bs=1 count=400 of=/dev/udp/SrcAddress.ai_addr/8000

这是错误

‘dd’ was not declared in this scope

如何在我的c代码中使用此命令?

2 个答案:

答案 0 :(得分:2)

你不能那样使用 select title, count(log.path) as views from articles, log where log.path like '%/articles.slug' group by articles.title order by views desc; 。您的C程序不是终端,只需在代码中编写它们就无法执行shell命令。执行所需操作的一种方法是使用dd,如下所示。

popen

答案 1 :(得分:0)

您实际想要做的是在C中编写此dd操作的等效。这看起来像这样。

int send_n_random_bytes_udp(unsigned int n, const struct sockaddr_in *dest)
{
    int rng = open("/dev/urandom", O_RDONLY);
    if (rng == -1) return -1;
    int sk  = socket(AF_INET, SOCK_DGRAM);
    if (sk  == -1) { close(rng); return -1; }

    int status = 0;
    for (unsigned int i = 0; i < n; i++) {
        char byte;
        if (read(rng, &byte, 1) != 1 ||
            sendto(sk, &byte, 1, 0,
                   (const struct sockaddr *)dest,
                   sizeof(struct sockaddr_in)) != 1) {
            status = -1;
            break;
        }
    }
    close(sk);
    close(rng);
    return status;
}