小编Xuf*_*eng的帖子

当前分支上有未提交的更改时,检出另一个分支

大多数时候,当我尝试检出另一个现有分支时,如果我在当前分支上有一些未提交的更改,Git不允许我.所以我必须首先提交或存储这些更改.

但是,偶尔Git允许我签出另一个分支而不提交或存储这些更改,它会将这些更改带到我签出的分支.

这里的规则是什么?更改是分阶段还是未分阶段是否重要?将更改传递给另一个分支对我没有任何意义,为什么git有时会允许它?也就是说,它在某些情况下有用吗?

git

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

exec是否保留文件描述符

这实际上是一个两步问题:

  1. 究竟什么是文件描述符?我认为这是表示打开文件的最基本方式.但是由于dup2可以使两个不同的文件描述符指向同一个文件,那么它代表一个唯一文件是什么?

  2. 如果我在exec之前执行dup2,那么整个程序就会被删除,它是否还有相同的文件描述符表?重定向的文件描述符是否仍然被重定向?

c unix file-descriptor

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

如何将不同类型存储在内存中

我目前正在编写一个涉及处理字节的C程序.说到字节,我真的很担心以下问题.

  1. 字符是否由ascii代码存储在内存中?说'A'有anscii代码65.所以它以与整数65相同的方式存储在内存中?

  2. 如果是这样,机器如何区分字符和整数?

  3. 如果字符由ascii代码存储,则ascii代码是整数.一个整数应该占用至少2个字节,一个字符怎么只占用1个字节?

  4. 最后一个是关于不同体系结构的整数.在16位机器上,如果1存储为000 ... 0001,那么在32位机器上,1仍然以相同的方式存储,只需在前面添加0?

c memory types

8
推荐指数
2
解决办法
8474
查看次数

在 C 中关闭管道文件描述符

这是代码:

int main() {

    int fd[2];
    pipe(fd);
    int r = fork();
    if (r > 0) { //parent
        close(fd[0]);
        // do a bunch of things
    } else { //child
        close(fd[1]);
        // do a bunch of things
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是一段代码,其中父级写入管道,子级从管道读取。我的问题是:对于这两个 close 语句,它们到底关闭了什么?父母和孩子应该共享同一个文件,即 fd[0] 和 fd[1]。如果 fd[0] 在父级中关闭,它不应该在子级中也关闭吗?

c pipe

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

为什么只有在写入结束时,管道的读取结束才会读取EOF?

我真的不明白"关闭管道的写入端"和"不向管道写任何东西"之间的区别.如果我没有写任何东西到管道并且管道是空的,为什么读取结束只是被阻止而不是读取EOF?与结束写入结束有什么不同?

c unix pipe

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

绑定套接字时为什么要将端口号转换为网络字节顺序?

我遇到了这段代码片段,它出现在设置套接字的内容中:

#define PORT xxxx

struct sockaddr_in self;
self.sin_family = PF_INET;
self.sin_port = htons(PORT);
Run Code Online (Sandbox Code Playgroud)

我知道我们需要转换我们通过网络传输的数据的字节顺序,Network Byte Order但我不明白为什么我们需要在设置套接字时将端口号转换为该端口号.我的意思是,当我们绑定时,它不是一个"本地"的东西吗?假设我们打算绑定的端口是1,机器实际上使用小端; 既然我们将它转​​换为网络字节顺序,我们不会绑定一个完全不同的端口到套接字?

c sockets

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

如果已经到达null终止符,write()会写什么?

对于write(fd[1], string, size)- 如果string短于size?会发生什么?

我查看了手册页,但没有明确说明这种情况.我知道,因为read它只会停在那里并阅读任何string内容,但事实并非如此write.那么写什么呢?返回值仍然size是附加null终止符?为什么它不会停止read.

c string nul

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

套接字关闭后为什么端口没有立即释放?

我发现默认情况下OS不会立即释放服务器关闭后服务器套接字使用的端口.通过SO_REUSEADDR在设置套接字时给出可以避免这个问题,但我不明白为什么保持端口一段时间是有用的.如果服务器关闭,套接字关闭,传输到该端口的任何数据都不会被处理吗?

c sockets

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

EOF是否设置错误?

我一直在努力处理系统调用的返回值 - 它们只是如此不一致!通常我检查它们是否为NULL或-1然后调用perror.但是,对于fgets,手册页说:

gets()fgets()返回如果成功,就和NULL对错误或者虽然没有字符被读取时的文件结束.

这意味着返回值NULL不一定是错误 - 它也可以是EOF.到达文件末尾时是否设置了错误?perror在这种情况下我还能打电话吗?

如果不是,通常的方法是判断调用是否返回错误与EOF.我想使用perrorNULL字符串表示错误,并使用自定义字符串表示EOF.

c unix system-calls

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

动态插入的脚本标记未按正确顺序执行

以下是我的HTML代码片段:

...

<script src=".../jquery.min.js"></script>

<script id="foo">
    if (!window.jQuery) {
        var jquery = document.createElement("script");
        jquery.src = ".../jquery.min.js";
        var self = document.getElementById("foo");
        self.parentNode.insertBefore(jquery, self.nextSibling);
        console.log("haha");
    }
</script>

<script>
    console.log("hehe");
</script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

第一个脚本标记是jquery CDN.id为"foo"的脚本标记的目的是,如果CDN失败,它会在加载以下引导程序js文件之前加载jquery文件的本地副本.

但是,在bootstrap js文件之前不会以某种方式执行插入的jquery文件.我尝试console.log("wow")输入本地jquery文件.控制台的结果是"haha", "hehe", some error message from bootstrap js file, "wow".观察DOM,插入的jquery标记确实出现在"hehe"脚本之前,我想知道为什么它没有以正确的顺序执行,是否有更好的方法来实现我的目标?

html javascript jquery

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

标签 统计

c ×8

unix ×3

pipe ×2

sockets ×2

file-descriptor ×1

git ×1

html ×1

javascript ×1

jquery ×1

memory ×1

nul ×1

string ×1

system-calls ×1

types ×1