小编Utu*_*mbu的帖子

UNIX中的管道可以双向工作吗?

看看下面的代码:

#include<unistd.h>
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<sys/types.h>

main() {
    int pipdes[2];
    char buff[50];
    const char parent[]="Parent Writes. Child Reads\n";
    const char child[]="Child Writes. Parent Reads\n";
    if(pipe(pipdes)==0) {
        pid_t pid=fork();
        if(pid<0)
              printf("Error\n");
        if(pid==0){
            read(pipdes[0],buff,50);
            printf("Parent: %s",buff);
            write(pipdes[1], child, strlen(child));
            exit(0);
        }
        else if(pid>0) {
            write(pipdes[1], parent, strlen(parent));
            wait(pid);
            read(pipdes[0], buff, 50);
            printf("Child: %s", buff);
        }
    }
    else
        printf("Error in pipe\n");
}
Run Code Online (Sandbox Code Playgroud)

现在,我在这里创建了一个管道,但这两个进程都可以读写.管道不应该是单向的.此外,当我把传统的'close(pipdes [0])'用于父级和'close(pipdes [1])'用于子级时,代码不起作用,尽管我添加了open(pipdes [0])函数后来.

我对UNIX和管道的概念仍然是原始的,所以我可能在这里有点蹩脚,但请你协助.

c unix pipe

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

CVXOPT QP求解器:TypeError:'A'必须是具有1000列的'd'矩阵

我正在尝试使用CVXOPT qp求解器来计算支持向量机的拉格朗日乘子

def svm(X, Y, c):
      m = len(X)
      P = matrix(np.dot(Y, Y.T) * np.dot(X, X.T))
      q = matrix(np.ones(m) * -1)
      g1 = np.asarray(np.diag(np.ones(m) * -1))
      g2 = np.asarray(np.diag(np.ones(m)))
      G = matrix(np.append(g1, g2, axis=0))
      h = matrix(np.append(np.zeros(m), (np.ones(m) * c), axis =0))
      A = np.reshape((Y.T), (1,m))
      b = matrix([0])

      print (A).shape

      A = matrix(A)

      sol = solvers.qp(P, q, G, h, A, b)
      print sol
Run Code Online (Sandbox Code Playgroud)

X是一个1000 X 2矩阵Y,标签数量相同.解算器抛出以下错误: $ python svm.py (1, 1000) Traceback (most …

python svm typeerror cvxopt quadratic-programming

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

查看对象无法连接到文件所有者

我试图在视图中"连接"我的对象File's Owner使用interface builder,但蓝线不与它"链接".这是我的代码:

CalculatorViewController.h:

#import <UIKit/UIKit.h>
#import "CalculatorBrain.h"

@interface CalculatorViewController : UIViewController {
    IBOutlet UILabel *display;
    IBOutlet UIButton *button;
    CalculatorBrain *brain;
    BOOL userIsInTheMiddleOfTypingANumber;
}

- (IBAction)digitPressed: (UIButton *)sender;
- (IBAction)operationPressed: (UIButton *)sender;

@end
Run Code Online (Sandbox Code Playgroud)

CalculatorViewController.m:

#import "CalculatorViewController.h"

@implementation CalculatorViewController

- (CalculatorBrain *)brain
{
    if (!brain) {
        brain = [[CalculatorBrain alloc] init];
    }
    return brain;
}


- (IBAction)digitPressed:(UIButton *)sender
{
    NSString *digit = [[sender titleLabel] text];
    if (userIsInTheMiddleOfTypingANumber) {
        [display setText: [[display text] stringByAppendingString:digit]];
    } else …
Run Code Online (Sandbox Code Playgroud)

iphone xcode interface-builder

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