#include <unistd.h>
#include <stdio.h>
void dump_log(int size){
char cmd[1024];
snprintf(cmd, sizeof(cmd)/sizeof(cmd[0]), "dd if=/dev/zero of=from.bin bs=1024 count=%d", size);
int ret = system(cmd);
if (ret<0){
perror("system");
}
}
int main(){
const char *filepath = "from.bin";
while(1){
dump_log(1024*100);
sleep(10);
unlink(filepath);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
strace -T ./a.out
显示这个:
unlink("from.bin") = 0 <0.019916>
Run Code Online (Sandbox Code Playgroud)
取消链接文件(100M)花费19ms,取消链接文件时会发生什么?为何这么慢?
系统信息:linux 3.13.0-57-generic,Ubuntu 14.04.2 LTS,ext4
ch := make(chan int, 10)
fmt.Println(cap(ch))
Run Code Online (Sandbox Code Playgroud)
函数调用是cap(ch)
常量还是求值?
golang 规范 说:
如果 s 是字符串常量,则表达式 len(s) 是常量。如果 s 的类型是数组或指向数组的指针,并且表达式 s 不包含通道接收或(非常量)函数调用,则表达式 len(s) 和 cap(s) 是常量;在这种情况下,不评估 s。否则,len 和 cap 的调用不是常量,并且 s 会被求值。
看来是评价了。
在golang中,您将如何处理TCPConn.Read/Write的错误返回?本文档没有说明读/写错误.
假设我有一个像这样的切片:
stu = [{"id":"001","name":"A"} {"id":"002", "name":"B"}]
也许还有更多这样的元素。切片内部是一个长字符串,我想使用 json.unmarshal 来解析它。
type Student struct {
Id string `json:"id"`
Name string `json:"name"`
}
studentList := make([]Student,len(stu))
for i, st := range stu {
go func(st string){
studentList[i], err = getList(st)
if err != nil {
return ... //just example
}
}(st)
}
//and a function like this
func getList(stu string)(res Student, error){
var student Student
err := json.Unmarshal(([]byte)(stu), &student)
if err != nil {
return
}
return &student,nil
}
Run Code Online (Sandbox Code Playgroud)
我得到了 nil 结果,所以我想说 goroutine …