小编Goo*_*son的帖子

C Unix管道示例

试图实现一个shell,主要是管道.我已经编写了这个测试用例,我希望将其简单地传递给wc ......它肯定不能按预期工作.它将ls打印到终端然后打印耗尽的内存.我很失落如何解决这个问题并让它发挥作用.find_path适用于我的所有测试.

编辑 - 我必须使用execv为项目,它是一个类的东西,但我已经尝试使用execvp以防万一,它完全相同的事情.这也只是一个例子,一个测试,看看为什么它不起作用,我为fork和waitpid调用fork两次,因为我没有别的事可做.

#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
int find_path(char* execname, char** dst)
{        
        char *path = getenv("PATH");
        path = strdup(path);
        char *pos;
        path = strtok_r(path, ":", &pos);
        char *originalpath  = path;
        do
        {
                char* test = (char*)calloc(strlen(path) + strlen(execname) + 2, sizeof(char));
                test = strcpy(test, path);
                int testlen = strlen(test);
                (*(test+testlen)) = '/';
                strcpy(test + testlen + 1,execname);
                struct stat buf;
                int result = stat(test, &buf);
                if (result == 0) …
Run Code Online (Sandbox Code Playgroud)

c unix fork pipe

4
推荐指数
1
解决办法
1万
查看次数

将多个剪切命令组合到一个剪切命令中的变量分配中

鉴于shell脚本中先前定义的$ LINE,我执行以下操作

var1=$(echo $LINE | cut -d, -f4)
var2=$(echo $LINE | cut -d, -f5)
var3=$(echo $LINE | cut -d, -f6)
Run Code Online (Sandbox Code Playgroud)

我有什么方法可以将它组合成一个命令,其中切割仅运行一次?就像是

var1,var2,var3=$(echo $LINE | cut -d, -f4,5,6)
Run Code Online (Sandbox Code Playgroud)

bash shell

4
推荐指数
2
解决办法
3392
查看次数

如何在 FreeBSD 中枚举 C 或 C++ 中的网络设备或接口列表?

如何在 FreeBSD 中枚举 C 或 C++ 中的网络设备或接口列表?

我想要一个像“ue0”、“ath0”、“wlan0”这样的列表。

我一直在查看 ifconfig(1) 代码,但根本不清楚任务在哪里执行。

我很乐意接受答案、指向手册页的指针或指向 ifconfig 中相应行的链接。我可能只是错过了。

c api freebsd

4
推荐指数
1
解决办法
2663
查看次数

string.c 测试套件

为了练习,我决定用 C 重写 string.c。我无法在网上(通过谷歌或其他搜索引擎)找到针对整个标准或专门针对 string.h 的测试套件

更具体地说,我想看看我的 strcat()、strncat()、strchr()、strrchr()、strcmp()、strncmp()、strcpy()、strncpy()、strlen() 和 strstr() 函数符合 ISO/IEC 9899:1990 (“ISO C90”)。

谁能推荐一个测试这些功能的好方法?

编辑:上面的标题和段落曾经说过 string.h - 我的意思是 string.c

c unit-testing standards-compliance

3
推荐指数
1
解决办法
1230
查看次数

这个CSS(| =)是什么意思?这叫什么?

我有一些看起来像的代码

[class|="e"]
{
    margin: 0 0 0 0;
} 
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我应该用什么谷歌搜索?

我尝试搜索stackoverflow(可以找到标点符号)和谷歌,但很难搜索没有名称.

css css-selectors

3
推荐指数
1
解决办法
135
查看次数

将标准输出和标准错误重定向到 C++ 中的单个文件

如何将 stdout 和 stderr 重定向到 C++ 中的单个文件?

我试过的是:

if((LogStream = freopen(strFilePath.c_str(), "w", stdout)) == NULL)
{
    cout << "Failed to redirect console logs\n";
}
if((LogStream = freopen(strFilePath.c_str(), "a", stderr)) == NULL)
{
    cout << "Failed to redirect console logs\n";
}
Run Code Online (Sandbox Code Playgroud)

但它并没有像我预期的那样工作。

提前致谢

c++ file-io stdout

3
推荐指数
1
解决办法
6505
查看次数

允许用户通过URL上传图像时应该注意什么?

我正在一个用户可以发布笔记的网站上工作.我正在考虑允许用户通过提供图像的URL来发布图像(即不通过表单上传).

但是,我已经了解到这可以用来做某种黑客攻击,例如,用户可以粘贴不是图像的网址,因此当页面加载时,将对该网址发出GET请求.
我想知道:
1.可以做些什么其他恶意事情,如何阻止它们?
2.有一种简单的方法(只使用JavaScript)来检查网址是否是图像?

javascript security get

2
推荐指数
1
解决办法
68
查看次数

什么$?和Shell脚本中的$#代表?

我有以下两个代码块,我不太确定是什么$?和$#代表.请帮忙.

代码一

 #!/bin/bashUSERID="$1" 
 /bin/id $USERID 2>/dev/null
[ $? -eq 0 ] && echo "User found" || echo "User not found"

/bin/id -g $USERID 2>/dev/null
[ $? -eq 0 ] && echo "Group found" || echo "Group not found"    `


$ cat > mtable
Run Code Online (Sandbox Code Playgroud)

代码二

#!/bin/sh
#
#Script to test for loop
#
#
if [ $# -eq 0 ]
then
echo "Error - Number missing form command line argument"
echo "Syntax : $0 number"
echo "Use to print multiplication table …
Run Code Online (Sandbox Code Playgroud)

bash shell posix

2
推荐指数
1
解决办法
5812
查看次数

在POSIX unix系统中,是否可以以一种方式mmap()文件,使其永远不会被换出到磁盘而支持其他文件?

如果没有使用mmap(),似乎应该有一种方法可以给某些文件"优先级",这样它们被换出的唯一时间就是试图引入的页面错误,例如,执行代码或内存是malloc()'d'通过一些过程,但从来没有其他文件.人们可以想到这可能有用的情况.考虑搜索引擎,它应该将其索引文件保存在缓存中,但可以同时写入新文件(不用于搜索).

c unix search mmap

2
推荐指数
1
解决办法
81
查看次数

如何批处理“diff”文件?

我有两个目录“sampleWith”和“sampleWithout”。这两个目录都包含相似的子目录和文件结构。我如何diff对应文件?

例如:有以下文件“sampleWith/a/index1.html”和“sampleWithout/a/index1.html”。我想要diff这两个文件并将输出写入相应的文件(例如 1.txt),并且我想对子目录中的所有文件执行此操作。我该怎么做呢?我知道我可以通过以下方式比较两个文件diff file1.html file2.html >> 1.txt获取 1.txt 中的输出,但如果我想跨目录比较类似的文件,我不知道该怎么做。我有很多文件想要比较,手动执行每个文件会花费很多时间。有人可以帮忙吗?谢谢!

编辑:

diff -r dir1/ dir2/正在将其写入单个文件。有什么办法可以将输出写入不同的文件吗?

bash shell

1
推荐指数
1
解决办法
3294
查看次数

C程序中的命令行参数(来自shell)

我正在写一个命令行计算器.用户提供的每个表达式必须用空格分隔(这是惯例).例如:./calc 2 + 5 * sin 45

问题是,当我尝试获取每个表达式时,我也得到了作为参数的所有文件,这些文件位于我已编译代码的文件夹中...

这是代码:

int main(int argc, char* argv[]) {
    double result;
    int i;
    printf("Number of arguments: %d\n", argc);

    for (i=0; i<argc; i++) {
        printf("Argument: %s\n", argv[i]);
    }

    //result = equation(argv, argc);
    //printf("Result is: %f", result);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

并且该示例表达式的输出是:

Number of arguments: 10
Argument: ./calc
Argument: 2
Argument: +
Argument: 5
Argument: calc
Argument: calculate.c
Argument: lab2
Argument: sin
Argument: 45
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么calc calculate.c lab2(当然编译该程序的文件夹包含所有三个文件).我应该在单独的文件夹中编译它吗?我尝试了这种方法,但仍然存在"计算"

PS.我正在使用gcc编译器:gcc calculate -o calc

c command-line-arguments

0
推荐指数
1
解决办法
139
查看次数

cd到linux中的符号链接显示错误

XXXXX:~/a/n1$ ln -s n1 n
XXXXX:~/a/n1$ ls
bin      doc  n  nc.tcsh  packages  scripts  support  VERSION
XXXXX:~/a/n1$ cd n
bash: cd: n: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我正在创建一个到n1的sym链接,即n.现在当我用bash或shell做cd时我无法做到.

缺什么.

symlink posix

0
推荐指数
1
解决办法
4495
查看次数