AMcoder - javascript, python, java, html, php, sql

Ինչպե՞ս կարող եմ մուտք գործել macOS API զանգեր C-ից Mac-ում:

Ինձ պետք է մուտք գործել macOS API զանգեր C ծրագրավորման լեզվից, այլ ոչ թե Swift-ի կամ Objective-C-ի միջոցով: Windows միջավայրի հետ համեմատելը կլինի այն, որ Windows-ում ես կարող եմ մուտք գործել այնպիսի զանգեր, ինչպիսիք են CreateFile(), HeapAlloc(), WriteProcessMemory(), VirtualAlloc() և այլն... Պարզապես #include <windows.h>-ով:

Ինչպե՞ս կարող եմ նման բան անել macOS Sierra-ում կամ High Sierra-ում: Նկատի ունեցեք, որ ինձ պետք չէ ստեղծել GUI հավելված: Ինձ միայն անհրաժեշտ է մուտք գործել Windows API-ի նման ցածր մակարդակի գործառույթներ:

Շնորհակալություն.

12.05.2018

Պատասխանները:


1

Դուք կարող եք օգտագործել POSIX API-ն, քանի որ macOS-ը POSIX-ին համապատասխան համակարգ է:

12.05.2018

2

macOS-ն իր հիմքում UNIX-ի նման օպերացիոն համակարգ է: Նրա ցածր մակարդակի API-ի զանգերը հիմնականում նման են Linux-ի կամ UNIX-ի նման այլ օպերացիոն համակարգերում հասանելիներին, օրինակ՝ դուք կարող եք փոխազդել ֆայլերի հետ՝ օգտագործելով open(), read(), և write(), և կարող եք հիշողություն հատկացնել՝ օգտագործելով malloc() և free(), կամ ավելի ցածր մակարդակում՝ օգտագործելով mmap() և munmap():

Windows-ի WriteProcessMemory()-ի ուղղակի համարժեքը մի փոքր ավելի դժվար է ստանալ: Այստեղ ձեր լավագույն տարբերակը կլինի Mach API-ները, ինչպիսիք են vm_read()-ը և vm_write()-ը: (macOS-ը չունի Linux-ում առկա /proc/<pid>/mem ինտերֆեյսը, և ptrace() ինտերֆեյսի նրա տարբերակը բավականին սահմանափակ է ֆունկցիոնալությամբ:) Հիշեք, որ որոշ համակարգի գործընթացներ կարող են վրիպազերծելի չլինել, եթե Համակարգի ամբողջականության պաշտպանությունը միացված է:

12.05.2018

3

Տեխնիկապես, դուք կարող եք կանչել Objective-C API-ներ ուղիղ C-ից՝ objc_msgSend ֆունկցիաների ընտանիքի միջոցով, կամ օգտագործելով Objective-C API-ները՝ մեթոդը լուծելու համար IMP, որը կարող եք այնուհետև փոխանցել ֆունկցիայի: տեսակ... բայց սա բավականին ցավ է:

Դա անելու շատ, շատ ավելի լավ միջոցը պարզապես մի քանի Objective-C կոդ խառնելն է հավելվածի մեջ: Դուք կարող եք այն առանձնացնել մեկ աղբյուրի ֆայլի մեջ և պարզապես տրամադրել C ֆունկցիայի միջերեսներ ձեր Objective-C կոդի համար՝ անելով նման բան.

MacSpecificStuff.h

void DoSomeMacSpecificThing();

MacSpecificStuff.m

#import <Foundation/Foundation.h> // or Cocoa/Cocoa.h, depending on what APIs you need
#import "MacSpecificStuff.h"

void DoSomeMacSpecificThing() {
    // Call a bunch of Obj-C APIs in here
}

Այնուհետև պարզապես զանգահարեք DoSomeMacSpecificThing();-ին ձեր C կոդից, և ամեն ինչ անհասկանալի է, քանի որ ձեր զանգի կոդը չի հետաքրքրի, թե որ լեզվով է իրականում ներդրված DoSomeMacSpecificThing()-ը:

12.05.2018
Նոր նյութեր

Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..